﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyAttribute
{
    /// <summary>
    /// 这是一个Student类
    /// </summary>
    // [Obsolete("请不要使用这个了，请使用什么来代替",true)]//系统 --在之前--标记的这玩意还可以影响编译器
    //; [Serializable]//可以序列化和反序列化  --类标记了这个特性以后，就可以做序列化 
    [Custom(id: 234)] //不允许标记两个 对应的无参数构造函数
    [Custom]  //标记到类
    public class Student
    {
        /// <summary>
        /// 
        /// </summary>
        [Custom(1234)]  //标记到属性
        public int Id { get; set; }
        public string Name { get; set; }

        [CustomAttribute("Richard")]  //标记到字段
        public string Description;

        [CustomAttribute(_Age = 30)]  //标记到方法
        public void Study()
        {
            Console.WriteLine($"这里是{this.Name}跟着Eleven老师学习");
        }

        /// <summary>
        /// 提问
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns> 
        [return: CustomAttribute]  //标记到方法的返回值
        public string Answer([CustomAttribute] string name)  // [CustomAttribute]  //标记到方法的参数
        {
            return $"This is {name}";
        }

        [CustomAttribute]  //标记到委托
        public delegate void StudentDelegate();

        //索引器 
        [CustomAttribute]  //标记到索引器
        public Index[] values;
    }
}
